package easy


/*
时间复杂度：O(N)
空间复杂度:O(1)
 */

// 先用双指针找到不相等的左右两个字符位置i,j 然后有两种可能，一种是i错误，一种是j错误，所以只需要判断[i+1, j]或[i, j-1]是否正确即可
func validPalindrome(s string) bool {
	i, j := 0, len(s)-1
	// 找到不相等的两个字符对应的i，j位置
	for ; i < j && s[i] == s[j]; {
		i++
		j--
	}
	return isPalindrome(s, i+1, j) || isPalindrome(s, i, j-1)
}

func isPalindrome(s string, i, j int) bool {
	for ; i < j && s[i] == s[j]; {
		i++
		j--
	}
	return i >= j
}